home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / COMAL / Z-Misc Series / (k)ze.d64 / src.codeload < prev    next >
Text File  |  2007-03-01  |  2KB  |  115 lines

  1. ;--------------------------------;
  2. ; CODELOAD - A COMAL MODULE      ;
  3. ;                                ;
  4. ; RUNNING A PROGRAM WITH A CODE  ;
  5. ;                                ;
  6. ; BY DICK KLINGENS               ;
  7. ; 851001                         ;
  8. ; DUTCH COMAL USERS GROUP        ;
  9. ; THE HAGUE - HOLLAND            ;
  10. ;--------------------------------;
  11. ;
  12. * =$8009 ;START OF MODULE
  13. ;
  14. ;--CONSTANTS---------------------;
  15. FALSE =0
  16. TRUE =1
  17. DEFPAG =%01000110 ;MAP
  18. DIS =8 ;CHARACTERS
  19. CR =13
  20. LOWER =14
  21. ;
  22. ;--VARIABLES & ROUTINES----------;
  23. TEMP =$0055 ;TEMPORARY STORAGE
  24. INDEX =$00F6 ;INDEX FOR TEXT
  25. CDBUF =$C661 ;CODE BUFFER
  26. NOREST =$C841 ;RESTORE
  27. HEADLN =$C84D ;FLAG
  28. CWRT =$CA06 ;PRINT CHAR ON SCREEN
  29. COMAL =$CA30 ;TO COMAL EDITOR
  30. EXCUTE =$CA36 ;EXECUTE CODE
  31. SCAN =$FFE4 ;SCAN KEYBOARD
  32. ;
  33. ;--CODES-------------------------;
  34. LOAD =2
  35. RUN =14
  36. ;
  37. ;--MODULE DESCRIPTION------------;
  38.  .BYTE DEFPAG ;MAP
  39.  .WORD EIND ;END OF MODULE
  40.  .WORD SIGNAL ;THERE IS A SIGNAL ROUTINE
  41.  .WORD 0 ;NO PACKAGES
  42. ;
  43. ;--------------------------------;
  44. SIGNAL CPY #LOAD ;IF NOT LOAD THEN
  45.  BNE NLOAD ;  GOTO NLOAD
  46.  LDA POWER
  47.  BEQ FIRST
  48.  JSR INCODE ;EXEC INCODE
  49.  LDA #255
  50.  STA HEADLN
  51.  STA CDBUF+3
  52.  LDA #RUN
  53.  STA CDBUF+4
  54.  JSR EXCUTE ;EXEC EXCUTE
  55.  JMP COMAL ;GOTO COMAL EDITOR
  56. ;
  57. FIRST INC POWER
  58. NLOAD RTS ;RETURN TO COMAL
  59. ;
  60. POWER .BYTE 0
  61. ;
  62. INCODE LDA #TRUE
  63.  STA NOREST ;DISABLE RESTORE
  64.  LDA #<TEXT
  65.  LDX #>TEXT
  66.  JSR PRTEXT ;EXEC PRTEXT
  67.  JSR READ ;EXEC READ
  68.  LDA #FALSE
  69.  STA NOREST ;ENABLE RESTORE
  70.  RTS        ;RETURN FROM INCODE
  71. ;
  72. PRTEXT STA INDEX ;SET TEXT POINTER
  73.  STX INDEX+1
  74.  LDY #0
  75. REPEAT LDA (INDEX),Y ;READ CHAR
  76.  BEQ EOT ;IF END-OF-TEXT THEN GOTO EOT
  77.  JSR CWRT ;EXEC CWRT
  78.  INY
  79.  BNE REPEAT
  80. EOT RTS ;RETURN FROM PRTEXT
  81. ;
  82. TEXT .BYTE DIS,LOWER
  83.  .BYTE 'TYPE CODE: '
  84.  .BYTE 0 ;END-OF-TEXT
  85. ;
  86. READ LDX #0
  87. WAIT STX TEMP
  88. SWAIT JSR SCAN        ;EXEC SCAN
  89.  BEQ SWAIT ;IF NO CHAR THEN GOTO SWAIT
  90.  LDX TEMP
  91.  CMP CODE,X ;IF NOT CODE=X THEN
  92.  BNE CDERR ;  GOTO CDERR
  93.  INX
  94.  CPX #CDEND-CODE ;IF NOT END-OF-CODE THEN
  95.  BNE WAIT ;  GOTO WAIT
  96.  LDA #<OK
  97.  LDX #>OK
  98.  JSR PRTEXT ;PRINT "OK"
  99.  RTS ;RETURN FROM READ
  100. ;
  101. CDERR JSR SCAN ;EXEC SCAN
  102.  CMP #CR ;IF NOT <CR> THEN
  103.  BNE CDERR ;  GOTO CDERR
  104.  LDA #<ERTXT
  105.  LDX #>ERTXT
  106.  JSR PRTEXT ;EXEC PRTEXT
  107. LOOP JMP LOOP ;RESET!!
  108. ;
  109. CODE .BYTE 'CML80' ;THIS IS THE CODE
  110. CDEND
  111. OK     .BYTE 'OK',CR,0
  112. ERTXT  .BYTE 'ERROR IN CODE, RESET',0
  113. ;
  114. EIND .END
  115.